package com.jmyd.coupon.server.enums;

import com.jmyd.commons.base.vo.LabelVo;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * 优惠券使用状态
 *
 * @author samphin
 * @since 2021-7-14 13:40:20
 */
public enum SceneCouponUseStatusEnum {

    /**
     * 使用状态(0:未使用 1:已使用 2:已过期)
     */
    NO_USE(0, "未使用"),
    USED(1, "已使用"),
    EXPIRED(2, "已过期"),
    ;

    @Getter
    private Integer code;
    @Getter
    private String desc;

    SceneCouponUseStatusEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static String getByCode(int code) {
        Optional<SceneCouponUseStatusEnum> optional = Arrays.stream(SceneCouponUseStatusEnum.values()).filter(en -> en.getCode() == code).findFirst();
        return optional.map(SceneCouponUseStatusEnum::getDesc).orElse(null);
    }

    public static List<LabelVo> queryList() {
        return Arrays.stream(SceneCouponUseStatusEnum.values()).map(en->{
            LabelVo vo = new LabelVo();
            vo.setKey(en.code);
            vo.setValue(en.desc);
            return vo;
        }).collect(Collectors.toList());
    }
}
